package qrcode

import (
	"encoding/base64"
	"fmt"
	goqrcode "github.com/skip2/go-qrcode"
	"io/ioutil"
	"lib/aliyun"
	config2 "lib/config"
	"lib/log"
	"os"
	"time"
)

func CreateQrcode(text string) string {
	// 生成二维码文件
	file, err := os.Create("qrcode.png")
	if err != nil {
		log.Errorf(err.Error())
		return ""
	}
	defer file.Close()
	daydir := time.Now().Format("20060102")
	dir := "resources/qrcode/" + daydir
	if _, err := os.Stat(dir); os.IsNotExist(err) {
		// 目录不存在，创建目录
		err := os.MkdirAll(dir, os.ModePerm)
		if err != nil {
			fmt.Println("创建目录失败:", err)
		}
		fmt.Printf("目录 '%s' 创建成功\n", dir)
	} else {
		// 目录存在
		fmt.Printf("目录 '%s' 已存在\n", dir)
	}
	newName := dir + "/" + text + "filename.png"

	config := config2.GetSystemConfig()
	// + '/index?reg='
	// 生成二维码并写入文件
	err = goqrcode.WriteFile(config.RefHost+"/#/?scene="+text, 1, 1024, newName)
	if err != nil {
		log.Errorf(err.Error())
	}

	//生成图片
	basePic, _ := getPicBase64(newName)

	oss := aliyun.OssService{
		IsPrivate: true,
	}
	err = oss.UploadImageBase64(newName, basePic)
	if err != nil {
		fmt.Println(err)
	}

	//url := oss.GetFileUrl(filePath)
	//filePath = "https://all2024.oss-cn-beijing.aliyuncs.com/" + filePath
	//operator.My_user.Avatar = filePath
	//err = dto.Update(operator.My_user)
	os.Remove(newName)

	return "https://all2024.oss-cn-beijing.aliyuncs.com/" + newName
}

func getPicBase64(filePath string) (string, error) {
	//filePath := "path/to/your/image.jpg"

	// 读取图片文件
	file, err := os.Open(filePath)
	if err != nil {
		return "", err
	}
	defer file.Close()

	// 读取文件内容
	data, err := ioutil.ReadAll(file)
	if err != nil {
		return "", err
	}

	// 将图片数据转换成Base64编码
	encodedString := base64.StdEncoding.EncodeToString(data)
	return encodedString, nil
}
